package day9;

import java.util.Arrays;

//函数式接口
//java提供函数式接口的目的：要求你通过函数式编程的方式，来实现这个接口
//是为了简化类实现接口和方法重写
//vue方法：const login=()=>{}
//java使用函数式编程：通过lambad 表达式 ()->{}
@FunctionalInterface//检测是否是正确的函数式接口
public interface Function {
    //抽象方法只有一个
    void test(int a);
    String sex="男";

    public static void main(String[] args) {
         Function fun=new Function() {
             @Override
             public void test(int a) {
                 System.out.println(a+"测试代码");
             }
         };
         Function fun2=(int a)->{
             System.out.println(a+"测试代码");
         };
         fun2.test(1000);
    }
}

interface Function2{
    public int math(int a,int b);

    public static void main(String[] args) {
        Function2 fun=(int a,int b)->{
            int c=a+b;
            System.out.println("结果："+c);
            return c;
        };
        fun.math(10,20);

        Function fun1=a->{
          System.out.println(a);
        };

        Function2 fun2=( a,b)->{
            return a+b;
        };

        Function fun3=a-> System.out.println(a);
        Function2 fun4=(a,b)-> a+b;
        fun3.test(100);
        int result=fun4.math(10,20);
        System.out.println(result);

        Function3 fun5=Arrays::toString;
        int nums[]={1,3,5,7,9};
        System.out.println(fun5.xx(nums));
        System.out.println(Arrays.toString(nums));

        Function4 fun6=Arrays::binarySearch;
        int i=fun6.test(nums,7);
        System.out.println(i);
    }
}

interface Function3{
    public String xx(int[] a);
}

interface Function4{
    public int test(int[] nums,int n);
}